#include <REGX52.H>
#include "MatrixKeyT.h"

unsigned char Key_KeyNumber;


/**
  *@brief   名称：矩阵键盘扫描，获取按键键码
  *@param   参数：无  （放在主函数while里 赋值给一个 代表键码的变量）
  *@retval返回值：KeyNumber 0代表无按键按下，1~16代表键码
  */
unsigned char Key(void)
{
	unsigned char Temp = 0;
	Temp = Key_KeyNumber;	//赋值给暂存变量
	Key_KeyNumber = 0;		//清零
	return Temp;			//返回暂存变量
}


/**
*@brief   名称：矩阵键盘读取按键键码, 内部函数(不需要外部调用的)
  *@param   参数：无
  *@retval返回值：KeyNumber 0代表无按键按下，1~16代表键码
  */
unsigned char MatrixKey_GetState()
{
	unsigned char KeyNumber=0;
	
	P1=0xFF;
	 P1_3=0;
	if(P1_7==0 && P1_3==0){KeyNumber=1;}
	if(P1_6==0 && P1_3==0){KeyNumber=5;}
	if(P1_5==0 && P1_3==0){KeyNumber=9;}
	if(P1_4==0 && P1_3==0){KeyNumber=13;}
	
	P1=0xFF;
	P1_2=0;
	if(P1_7==0 && P1_2==0){KeyNumber=2;}
	if(P1_6==0 && P1_2==0){KeyNumber=6;}
	if(P1_5==0 && P1_2==0){KeyNumber=10;}
	if(P1_4==0 && P1_2==0){KeyNumber=14;}
	
	P1=0xFF;
	P1_1=0;
	if(P1_7==0 && P1_1==0){KeyNumber=3;}
	if(P1_6==0 && P1_1==0){KeyNumber=7;}
	if(P1_5==0 && P1_1==0){KeyNumber=11;}
	if(P1_4==0 && P1_1==0){KeyNumber=15;}
	
	P1=0xFF;
	P1_0=0;
	if(P1_7==0 && P1_0==0){KeyNumber=4;}
	if(P1_6==0 && P1_0==0){KeyNumber=8;}
	if(P1_5==0 && P1_0==0){KeyNumber=12;}
	if(P1_4==0 && P1_0==0){KeyNumber=16;}
	
	return KeyNumber;
}


void MatrixKey_Loop(void)
{
	static unsigned char NowState,LastState;
	LastState = NowState;				//按键状态更新
	NowState  = MatrixKey_GetState();		//获取当前按键状态
	if(LastState == 1 && NowState == 0) {Key_KeyNumber=1;}
	if(LastState == 2 && NowState == 0) {Key_KeyNumber=2;}
	if(LastState == 3 && NowState == 0) {Key_KeyNumber=3;}
	if(LastState == 4 && NowState == 0) {Key_KeyNumber=4;}
	if(LastState == 5 && NowState == 0) {Key_KeyNumber=5;}
	if(LastState == 6 && NowState == 0) {Key_KeyNumber=6;}
	if(LastState == 7 && NowState == 0) {Key_KeyNumber=7;}
	if(LastState == 8 && NowState == 0) {Key_KeyNumber=8;}
	if(LastState == 9 && NowState == 0) {Key_KeyNumber=9;}
	if(LastState ==10 && NowState == 0) {Key_KeyNumber=10;}
	if(LastState ==11 && NowState == 0) {Key_KeyNumber=11;}
	if(LastState ==12 && NowState == 0) {Key_KeyNumber=12;}
	if(LastState ==13 && NowState == 0) {Key_KeyNumber=13;}
	if(LastState ==14 && NowState == 0) {Key_KeyNumber=14;}
	if(LastState ==15 && NowState == 0) {Key_KeyNumber=15;}
	if(LastState ==16 && NowState == 0) {Key_KeyNumber=16;}
}



